#include "Componente.h"



Componente::Componente(vector<Primitiva*> primitivas, vector<Materiais*> materiais, Texturas *tex, Transformacoes *transf) {
	
	this->primitivas = primitivas;
	this->materiais = materiais;
	textura = tex;
	transformacao = transf;

}

void Componente::aplica() {

	// cout << "Materiais_Componente " << materiais.size() << endl;
	leVectorMateriais();
	
	// cout << "************************APLICACOES******************************" << endl;
	this->transformacao->aplica();
	// cout << "APLICA TRANSF" << endl;
	this->textura->aplica();
	// cout << "APLICA TEXT" << endl;
	vector<Materiais*>::iterator it = materiais.begin();
	for(; it != materiais.end(); it++) {
	 	// cout << "Material: " << (*it)->getInherit() << endl;
		(*it)->aplica();
	}
	// cout << "APLICA MATERIAL" << endl;

	// cout << "APLICA TRANSF, TEXTURAS E MATERIAIS" << endl;
	glPushMatrix();
	for(vector<Primitiva*>::iterator it = primitivas.begin(); it != primitivas.end(); it++) {
		// cout << "loopPrimitivas" << endl;
		(*it)->aplica();
		// cout << "Aplica bem primitiva" << endl;
	}

	for(vector<Componente*>::iterator it = componentes.begin(); it != componentes.end(); it++) {
		// cout << "loopComponentes" << endl;
		// cout << "Componente: " << (*it)->getId() << endl;
		(*it)->aplica();
		
	}
	glPopMatrix();
	// cout << "Ja nao ha componentes " << endl;
}
